/**
 * 用户信息管理工具
 * 提供用户信息的获取、保存、清除等功能
 */

/**
 * 获取完整的用户信息
 * @returns {Object|null} 用户信息对象
 */
export function getUserInfo() {
	try {
		const userInfo = uni.getStorageSync('userInfo');
		return userInfo || null;
	} catch (error) {
		console.error('获取用户信息失败:', error);
		return null;
	}
}

/**
 * 获取用户ID
 * @returns {String|null} 用户ID
 */
export function getUserId() {
	try {
		return uni.getStorageSync('userId') || null;
	} catch (error) {
		console.error('获取用户ID失败:', error);
		return null;
	}
}

/**
 * 获取用户名
 * @returns {String|null} 用户名
 */
export function getUserName() {
	try {
		return uni.getStorageSync('userName') || null;
	} catch (error) {
		console.error('获取用户名失败:', error);
		return null;
	}
}

/**
 * 获取用户类型
 * @returns {Number|null} 用户类型
 */
export function getUserType() {
	try {
		return uni.getStorageSync('userType') || null;
	} catch (error) {
		console.error('获取用户类型失败:', error);
		return null;
	}
}

/**
 * 获取学校ID
 * @returns {Number|null} 学校ID
 */
export function getSchoolId() {
	try {
		return uni.getStorageSync('schoolId') || null;
	} catch (error) {
		console.error('获取学校ID失败:', error);
		return null;
	}
}

/**
 * 获取用户头像
 * @returns {String|null} 用户头像URL
 */
export function getUserAvatar() {
	try {
		return uni.getStorageSync('userAvatar') || null;
	} catch (error) {
		console.error('获取用户头像失败:', error);
		return null;
	}
}

/**
 * 获取Token
 * @returns {String|null} Token
 */
export function getToken() {
	try {
		return uni.getStorageSync('tokenId') || uni.getStorageSync('token') || null;
	} catch (error) {
		console.error('获取Token失败:', error);
		return null;
	}
}

/**
 * 检查用户是否已登录
 * @returns {Boolean} 是否已登录
 */
export function isLoggedIn() {
	const userId = getUserId();
	const token = getToken();
	return !!(userId && token);
}

/**
 * 获取用户性别文本
 * @returns {String} 性别文本
 */
export function getUserSexText() {
	const userSex = uni.getStorageSync('userSex');
	switch (userSex) {
		case 1:
			return '男';
		case 0:
			return '女';
		default:
			return '未知';
	}
}

/**
 * 获取用户类型文本
 * @returns {String} 用户类型文本
 */
export function getUserTypeText() {
	const userType = getUserType();
	switch (userType) {
		case 1:
			return '管理员';
		case 2:
			return '教师';
		case 3:
			return '学生';
		default:
			return '未知';
	}
}

/**
 * 保存用户登录信息
 * @param {Object} userInfo 用户信息对象
 */
export function saveUserInfo(userInfo) {
	try {
		// 保存完整的用户信息
		uni.setStorageSync('userInfo', userInfo);
		
		// 保存用户基本信息
		if (userInfo.userId) uni.setStorageSync('userId', userInfo.userId);
		if (userInfo.userName) uni.setStorageSync('userName', userInfo.userName);
		if (userInfo.userSex !== undefined) uni.setStorageSync('userSex', userInfo.userSex);
		if (userInfo.userType) uni.setStorageSync('userType', userInfo.userType);
		if (userInfo.schoolId) uni.setStorageSync('schoolId', userInfo.schoolId);
		if (userInfo.tokenId) uni.setStorageSync('tokenId', userInfo.tokenId);
		if (userInfo.user_avatar) uni.setStorageSync('userAvatar', userInfo.user_avatar);
		if (userInfo.dictName) uni.setStorageSync('dictName', userInfo.dictName);
		
		console.log('用户信息保存成功');
	} catch (error) {
		console.error('保存用户信息失败:', error);
	}
}

/**
 * 清除用户登录信息（退出登录）
 */
export function clearUserInfo() {
	try {
		const keysToRemove = [
			'userInfo',
			'userId', 
			'userName',
			'userSex',
			'userType',
			'schoolId',
			'tokenId',
			'token',
			'userAvatar',
			'dictName'
		];
		
		keysToRemove.forEach(key => {
			uni.removeStorageSync(key);
		});
		
		console.log('用户信息清除成功');
	} catch (error) {
		console.error('清除用户信息失败:', error);
	}
}

/**
 * 获取用户显示名称（优先使用真实姓名，其次用户名）
 * @returns {String} 显示名称
 */
export function getDisplayName() {
	const dictName = uni.getStorageSync('dictName');
	const userName = getUserName();
	return dictName || userName || '未知用户';
}

// 默认导出
export default {
	getUserInfo,
	getUserId,
	getUserName,
	getUserType,
	getSchoolId,
	getUserAvatar,
	getToken,
	isLoggedIn,
	getUserSexText,
	getUserTypeText,
	saveUserInfo,
	clearUserInfo,
	getDisplayName
};
